home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / LGP250S1.ZIP / src / libgplus.5 / libgplus / utils / gplusdep.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1992-12-04  |  1KB  |  74 lines

  1. #! /bin/sh
  2.  
  3. # This utility is a lightly editted version of the freed Berkeley
  4. # script `mkdep'.  The current script is intended to work for GNU G++.
  5.  
  6. # Here is the original BSD header:
  7. #    @(#)mkdep.sh    1.7    (Berkeley)    10/13/87
  8. #
  9.  
  10. # PATH=/bin:/usr/bin:/usr/ucb:/usr/gnu:/usr/gnu/bin
  11. # export PATH
  12.  
  13. if [ $# = 0 ] ; then
  14.     echo 'usage: g++dep [-p] [-f makefile] [flags] file ...'
  15.     exit 1
  16. fi
  17.  
  18. MAKE=Makefile            # default makefile name is "Makefile"
  19. case $1 in
  20.     # -f allows you to select a makefile name
  21.     -f)
  22.         MAKE=$2
  23.         shift; shift ;;
  24.  
  25.     # the -p flag produces "program: program.c" style dependencies
  26.     # so .o's don't get produced
  27.     -p)
  28.         SED='-e s;\.o;;'
  29.         shift ;;
  30. esac
  31.  
  32. if [ ! -w $MAKE ]; then
  33.     echo "g++dep: no writeable file \"$MAKE\""
  34.     exit 1
  35. fi
  36.  
  37. TMP=/tmp/g++dep$$
  38.  
  39. trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
  40.  
  41. cp $MAKE ${MAKE}.bak
  42.  
  43. sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
  44.  
  45. cat << _EOF_ >> $TMP
  46. # DO NOT DELETE THIS LINE -- g++dep uses it.
  47. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
  48.  
  49. _EOF_
  50.  
  51. # put every dependency on one line 
  52. #
  53. g++ -M $* | \
  54. sed -e 's; \./; ;g' $SED | \
  55. awk '   BEGIN        { start = 1 }
  56.     /.* : .*.*/ { printf ("%s : %s \\\n", $1, $3) ; start = 4 }
  57.             { for ( i = start; i < NF ; i++ ) 
  58.             if ( $i != "\\" ) print " ", $i, "\\"
  59.               if ( $i != "\\" ) print " ", $NF
  60.               start = 1
  61.             }
  62. ' >> $TMP
  63.  
  64. cat << _EOF_ >> $TMP
  65.  
  66. # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
  67. _EOF_
  68.  
  69. # copy to preserve permissions
  70. cp $TMP $MAKE
  71. rm -f ${MAKE}.bak $TMP
  72. exit 0
  73.  
  74.